package com.bootcamp.sb1126yml.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.bootcamp.sb1126yml.properties.DataSourcePropertiesD;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
 * @program: spring-boot
 * @description:
 * @author: Keyu Li
 * @create: 2021-11-26 11:08
 **/

/*
* 相比3再进一步，直接建立 配置类 和 参数类 之间的关系
*  @EnableConfigurationProperties 包含了注册参数类的功能
*  采用 有参构造方法 初始化 配置类
*  绝大多数自动配置类都是采用此方式
* */

@EnableConfigurationProperties(DataSourcePropertiesD.class)
@Configuration
public class DataSourceConfiguration4 {

    // 配置类实例化方式 -> 有参构造
    DataSourcePropertiesD properties;

    public DataSourceConfiguration4(DataSourcePropertiesD properties) {
        this.properties = properties;
    }

    @Bean("dataSource4")
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(properties.getUrl());
        dataSource.setUsername(properties.getUsername());
        dataSource.setPassword(properties.getPassword());
        return dataSource;
    }
}
